#include <stdio.h>
#include <string.h>
#define BUFFER_SIZE  5/*宏定义*/



/*数组*/
//连续的存储空间指打印出的地址是连续的
//存储相同的的数据类型
int main()
{
    
/*1.数组的定义*/
/*整个代码不许使用魔数*/
   int array1[BUFFER_SIZE];//一个int 4字节
   
   #if 0
   int len = sizeof(array1);
   printf("len:%d\n",len);
   #endif
   

#if 0
   char array2[10];//字符数组

   len = sizeof(array2);
   printf("len:%d\n",len);

   short array3[5];//一个short 2个字节
   len = sizeof(array3);
   printf("len:%d\n",len);

   long array4[4];
    len = sizeof(array4);
   printf("len:%d\n",len);
   #endif
   /*2.数组的值*/
   //array1[0] = 10;
   //array1[1] = 20;
   //array1[2] = 30;
   // array1[3] = 40;
   //array1[4] = 50;
    for(int idx = 0 ; idx < BUFFER_SIZE ; idx++ )
    {

    array1[idx] = (idx + 1) * 10;

    }

     //printf("array1[0]:%d",array1[0]);//数组名

     /*一般来说：'\'是转义*/

    for(int idx = 0 ; idx < BUFFER_SIZE ;idx++)
    {

        printf("array1[%d]=%d\n", idx , array1[idx] );

    }
    

    /*3.连续的存储空间*/
   
    printf("0X%p\n", &array1[0]);
    printf("0X%p\n", &array1[1]);
    printf("0X%p\n", &array1[2]);
    printf("0X%p\n", &array1[3]);
    printf("0X%p\n", &array1[4]);

    /*4. 脏数据*/
    int a;
    printf("a:%d\n",a);
    int array5[BUFFER_SIZE];
    memset(array5, 0, sizeof(array5));//清楚脏数据
    /*另一种清楚脏数据的方式：bzero(array5, sizeof(array5))*/
    

 for(int idx = 0; idx < BUFFER_SIZE; idx++)
 {
    
    printf("array5[%d] = %d\n", idx ,array5[idx]);


   

 }
    /*5. 数组的本质*/

        /*todo...*/
        /*数组名就是数组的首地址，数组的第一个元素也是首地址*/
        printf("0X%p\n",array5);
        printf("0X%p\n",&array5[0]);

      /*6. 数组的长度
      数组占总字节的大小*/
      int  totalLen = sizeof(array5);
      printf("totalLen:%d\n",totalLen);
      int soloLen = sizeof(array5[0]);
      printf("soloLen:%d\n",soloLen);

      int elementSize = totalLen / soloLen;
      printf("element size:%d\n",elementSize);

}